import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#import cv2
from sklearn.cluster import KMeans
df = pd.read_csv('artwork_img_kmean.csv')
#sample_images = df.Artwork_Image_Path.sample(16).tolist(); sample_images
sample_images = [
'images2/asi2-102572/17.jpg',
'images2/missingImages/0612776/129.jpg',
'images2/asi2-108907/24.jpg',
'images2/asi2-117414/4.jpg',
'images2/ARTB.P120060425/408.jpg',
'images2/asi2-114078/63.jpg',
'images2/asi2-116230/10.jpg',
'images2/asi2-103033/50.jpg',
'images2/asi2-108413/73.jpg',
'images2/asi2-117336/36.jpg',
'images2/missingImages/0612776/112.jpg',
'images2/asi2-112679/255.jpg',
'images2/asi2-101657/62.jpg',
'images2/asi2-100678/1.jpg',
'images2/asi2-109828/105.jpg',
'images2/missingImages/0989500/27.jpg']
sample_images
fig,axes=plt.subplots(4,4,figsize=(15,15))
for i,iax in enumerate(axes.flatten()):
iax.imshow(plt.imread(sample_images[i]))
iax.axis("off")
def find_color_palettes(imgpath):
#img = cv2.cvtColor(cv2.imread(imgpath), cv2.COLOR_BGR2RGB)
img = plt.imread(imgpath)
nrows, ncols, nchns = img.shape
X = img.reshape(nrows*ncols, nchns)
n_clusters = 5
km = KMeans(n_clusters=n_clusters, random_state=0).fit(X)
assert km.n_iter_ < km.max_iter, "did not converge: iter(n={} max={})".format(km.n_iter_, km.max_iter)
labels, counts = np.unique(km.labels_, return_counts=True)
print imgpath
print pd.DataFrame(km.cluster_centers_.round(0).astype(int)).assign(
count=counts, label=labels).rename(columns={0:'R',1:'G',2:'B'}).sort_values('count', ascending=False)
sorted_by_count = sorted(zip(labels, counts), key=lambda x:x[1], reverse=True)
palettes_by_count = [km.cluster_centers_[label].round(0).astype(int).tolist()
for label, count in sorted_by_count]
plt.subplots(2,1,figsize=(10,10))
axes = [plt.subplot2grid((2, n_clusters), (0, 0), colspan=n_clusters)]
axes += [plt.subplot2grid((2, n_clusters), (1, i)) for i in range(n_clusters)]
map(lambda ax:ax.axis("off"), axes)
axes[0].imshow(img)
for i, p in enumerate(palettes_by_count):
axes[i+1].imshow([[p]*16]*16)
plt.tight_layout()
find_color_palettes(sample_images[0])
find_color_palettes(sample_images[1])
find_color_palettes(sample_images[2])
find_color_palettes(sample_images[3])
find_color_palettes(sample_images[4])
find_color_palettes(sample_images[5])
find_color_palettes(sample_images[6])
find_color_palettes(sample_images[7])
find_color_palettes(sample_images[8])
find_color_palettes(sample_images[9])
find_color_palettes(sample_images[10])
find_color_palettes(sample_images[11])
find_color_palettes(sample_images[12])
find_color_palettes(sample_images[13])
find_color_palettes(sample_images[14])
find_color_palettes(sample_images[15])